package org.batallademusica.dao;

import java.util.logging.Logger;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import org.batallademusica.dominio.Cancion;
import org.batallademusica.dominio.CancionPK;

import com.movired.utiles.llavesPrimarias.LlavePrimaria;

/**
 * Caso de prueba para el papel que puede jugar el patron DAO en un entonor JPA
 * Solo voy a implementar el patron EntityManager por metodo.  
 *
 */
public class JPACancionDAO implements CancionDAO {
	
	@Override
	public void crear(Cancion entidad) {
		EntityManagerRepository.getInstance().recuperarEntityManager().persist(entidad);
	}

	@Override
	public void borrar(LlavePrimaria pk) {
		EntityManagerRepository.getInstance().recuperarEntityManager()
		.createNamedQuery("Cancion.borrarPorPK")
		.setParameter("pk", pk.toBDId())
		.executeUpdate();
	}

	@Override
	public void salvar(Cancion entidad) {
		EntityManagerRepository.getInstance().recuperarEntityManager().merge(entidad);
	}

	@Override
	public Cancion buscarPorPK(LlavePrimaria pk) {
		return EntityManagerRepository.getInstance().recuperarEntityManager().find(Cancion.class, (CancionPK)pk);
	}

	@Override
	public void borrar(Cancion entidad) {
		EntityManagerRepository.getInstance().recuperarEntityManager().remove(entidad);
	}
}
